[Ready for review] Hessian for elementwise multiplication#6
Merged
Conversation
Transurgeon
reviewed
Jan 5, 2026
Transurgeon
approved these changes
Jan 5, 2026
Collaborator
Transurgeon
left a comment
There was a problem hiding this comment.
Looks great! Had a few comments/questions once again, but feel free to merge :).
| expr *y = node->right; | ||
|
|
||
| /* for correctness x and y must be (1) different variables, | ||
| or (2) both must be linear operators */ |
Collaborator
There was a problem hiding this comment.
can we not have (Ax) * y? as long as they have the same shape? So not necessarily both linear operators?
Collaborator
Author
There was a problem hiding this comment.
Right now we don't support this, because the second argument must be a "global" linear operator for the product rule to be correct. But we can form the B matrix representing y internally if only the left node is a linear operator. I'll add this as an issue so we do this later.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR is work in progress, so no need to review it yet.
Adds hessian for elementwise multiplication. For correctness it assumes that either
For example, it can't handle multiply(x, x) where both x are vectors, so in the DNLP canon file of multiply we could check if both arguments are variables and if yes we instead canonicalize it to power. (We do similar checks for rel_entr, which we canonicalize using log if one of the arguments is a constant.)
The code can handle multiply(Ax, Ax) though, where A has global column indices